很多phper一直停留在php web开发的mvc CURD中,也听到很多人对自己陷入这种困境中多有不满,但又不知道如何提高自己,摆脱困境。活脱脱就像一直趴在玻璃上的苍蝇,前途一片光明,就是飞不出去,可悲可叹。
话说回来,实际上做到一名合格的CURDer也并不是一件容易的事情,万万不可眼高手低。
如果想提高自己,也不一定非要通过工作,我认为一个人的提高更多是在非工作环境中。php的开发人员开始通过尝试接触并使用swoole或者workerman(0_0 或者等我的php socket框架,啦啦啦 0_0)来提高自己的认知水准,这就像2017年那部挺火的电视剧中那样,鼓励大家学英语,我认为挺好的。
学习swoole前,我建议大家有最好有如下知识储备或者有准备学习如下知识的准备:
  • 多进程多线程知识储备,多进程进程间通信,多进程多线程锁相关,进程管理等
  • 服务器IO模型相关知识储备
  • 熟练的*NIX系统操作以及良好的使用习惯
考虑到本PO主原来叨叨了一坨与进程相关的知识,所以这篇就来一坨与swoole进程相关的内容,这也是要学习并好好利用swoole的第一课,打好基础,会对你使用有着更大的帮助。
先贴一张图,是从官方wiki上偷过来的,不得不说,如果你去swoole官方wiki上找,都不一定能找到这个图,我的言下之意就是老韩写的文档组织方式以及内容确实比较混乱,没有对比就没有伤害,比如人家workerman的文档的,我贴出来,你们感受一下:
啦啦啦,盗图狗要贴图了:

结合上图开始简单描述一下swoole中进程角色们:
  • manager进程manager进程是worker进程和taskworker进程的妈,说的洋气点儿就是manager进程fork出来了worker进程和taskworker进程,生出来了就得管,所以,manager进程得负责对worker进程和taskworker进程的抚养义务,具体包括监控它们的状态、当它们意外挂了后重新拉起一个新的进程(避免了僵尸进程)、平滑重启(就是传说中的reload)。

简单总结混在一起说下这几种进程之间是怎么搭配起来干活的。见说来说,就是master进程就是接活儿的销售,但是具体干活则由worker进程来做,如果worker进程感觉到某些流程太繁忙复杂就可以让tasker进程来做。而manager进程就是后勤worker进程和takser进程的人力资源保障部,负责他们的生死存亡和吃喝拉撒。